An erasure channel is an important channel model. For example, a file is based on packet communication when it is transmitted over an internet, and generally each packet is either received by a receiving end with no error or is not received at all by the receiving end. In the transmission control protocol (TCP), an approach to network packet loss is an error detection and retransmission mechanism, i.e. utilizing a feedback channel from an input end to an output end to control packets that need to be retransmitted. When the receiving end has detected packet loss, it generates a retransmission control signal until it correctly receives the complete packet; when the receiving end has received the packet, it generates a receipt acknowledgement signal likewise. The sending end also tracks each packet until it receives a notification signal which is fed back, otherwise it will perform retransmission.
A data broadcast service based on a flow mode and a file download mode is a point-to-multipoint service that does not allow feedback, so the traditional error detection and retransmission mechanism can not be used, and therefore it is required to use forward error correction (FEC) to ensure reliable transmission. The classic application layer FEC comprises RS codes (reed-solomon codes) and digital fountain codes, etc. The complexity of coding and decoding RS codes is high, which generally is only suitable for scenarios where the code length is smaller. LT codes (Luby transform codes) and raptor codes are two kinds of practically applicable digital fountain codes. Having linear coding and decoding time, the LT codes show a substantial improvement relative to the RS codes, while the raptor codes offer a much higher decoding efficiency because of the use of a precoding technology. The raptor codes are used as the FEC coding scheme in 3GPP's multimedia broadcast/multicast service (MBMS) and digital video broadcasting (DVB).
A low density generator matrix code (LDGC) is a linear block code, and nonzero elements in its generator matrix are generally sparse. Meanwhile, the LDGC is also a system code, a square matrix formed by the first k columns of its generator matrix is generally an upper triangular matrix or a lower triangular matrix, and the inversion of the matrix can be accomplished by an iteration method. The coding of the LDGC involves first determining an intermediate variable based on the corresponding relationship between an information bit and the intermediate variable in system codes, and then obtaining a coded code word by multiplying the intermediate variable with the generator matrix. The decoding process of the LDGC involves first using the generator matrix to determine an intermediate variable, and then determining an information bit according to the transformation relationship between the information bit and the intermediate variable. The coding complexity of the LDGC is far lower than that of the raptor code, so the LDGC can support coding of any information packet length and any code rate and offer a performance similar to the raptor code, and both can be close to the theoretical optimum performance.
Compared to the structured low density generator matrix code (LDGC), the LT code does not support the coding form of system codes, therefore it is hard for the LT code to meet some practical FEC coding requirements; the raptor code supports system codes, but the raptor code requires a separate precoding process, i.e. it requires a precoding matrix, therefore its coding complexity is higher, whereas the LDGC directly uses the generator matrix to code without the need of an extra precoding matrix, plus the LDGC coding utilizes a back substitution method to solve an upper triangular (or a lower triangular) equation, and therefore its coding complexity is far lower than that of the raptor code. In a word, compared to the LT code, the LDGC has the advantage of supporting system codes; compared to the raptor code, the LDGC has the advantage of offering a lower coding complexity.